package org.jederik.studip.android.view.tools;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Hilfsklasse zum Formatieren eines Datums
 * @author Jann-Frederik Laß
 *
 */
public class FormatHelper {
	
	private static final int MS_PER_DAY = 24*60*60*1000;
	private static final String TIME_PATTERN = "H:mm";
	private static final String DATE_TIME_PATTERN = "d.M.yyyy, H:mm";
	
	private static DateFormat sTime = new SimpleDateFormat(TIME_PATTERN);
	private static DateFormat sDateTime = new SimpleDateFormat(DATE_TIME_PATTERN);
	
	/**
	 * Formatiert einen Zeitpunkt, der als Stud.IP-Zeitstempel angegeben wird.
	 * @param studipTimestamp Zeitpunkt in Sekunden (nicht Miliisekunden!) seit 1970
	 * @return Formatiertes Datum
	 */
	public static String formatDate(int studipTimestamp) {
		return formatDate(1000L * studipTimestamp);
	}
	
	/**
	 * Formatiert ein Datum, das als Java-Zeitstempel angegeben wird.
	 * @param when Java timestamp
	 * @return Formatiertes Datum
	 */
	public static String formatDate(long when) {
//		long now = new Date().getTime();
//		boolean today = (when/MS_PER_DAY == now/MS_PER_DAY);
//		Date date = new Date(when);
//		if (today) {
//			return sTime.format(date);
//		}
//		else {
//			return sDateTime.format(date);
//		}
		return formatDate(new Date(when));
	}
	
	/**
	 * Formatiert ein Datum
	 * @param d Datum
	 * @return Formatiertes Datum
	 */
	public static String formatDate(Date d) {
		long when = d.getTime();
		long now = new Date().getTime();
		boolean today = (when/MS_PER_DAY == now/MS_PER_DAY);
		Date date = new Date(when);
		if (today) {
			return sTime.format(date);
		}
		else {
			return sDateTime.format(date);
		}
	}

}
